package com.freemarker.vo;

import java.util.LinkedHashMap;
import java.util.Map;

import com.freemarker.db.SpringUtil;

public class DataTypeSources {

	public static final String xmlName = "dataTypel.xml";
	private static final String classId = "dataTypeSources";

	private Map parametersConfig;

	private static DataTypeSources dataSourcesConfig = null;

	private DataTypeSources() {
		parametersConfig = new LinkedHashMap();
	}

	public Map getParametersConfig() {
		return parametersConfig;
	}

	public void setParametersConfig(Map parametersConfig) {
		this.parametersConfig = parametersConfig;
	}

	public static DataTypeSources getDataSourcesConfig() {
		if (dataSourcesConfig == null) {
			dataSourcesConfig = (DataTypeSources) SpringUtil.getXmlName(xmlName).getBean(classId);
		}
		return dataSourcesConfig;
	}
	
	
	public static DataTypeJavaField getDataTypeJavaField(String columnDataType) {
		return (DataTypeJavaField) getDataSourcesConfig().getParametersConfig().get(columnDataType);
	}

	public void add(Object key, DataTypeJavaField dataSourceJavaField) {
		dataSourceJavaField.setName(key.toString());
		parametersConfig.put(key, dataSourceJavaField);
	}

	
	public static void main(String[] args) {
		DataTypeSources dataSourcesConfig = (DataTypeSources) DataTypeSources.getDataSourcesConfig();
		System.out.println(dataSourcesConfig.toString());
		
//		DataSourceJavaField dataSourceJavaField = (DataSourceJavaField) DataSourcesConfig.getDataSourcesConfig().getParametersConfig().get("int");
//		System.out.println(dataSourceJavaField.toString());
		
		DataTypeJavaField dataSourceJavaFieldAdd=new DataTypeJavaField();
		dataSourceJavaFieldAdd.setColumnDataType("varchar");
		dataSourceJavaFieldAdd.setDefaultValue("");
		dataSourceJavaFieldAdd.setJavaDataTypeBase("String");
		dataSourceJavaFieldAdd.setJavaDataTypeWrapper("String");
		DataTypeSources.getDataSourcesConfig().add("varchar", dataSourceJavaFieldAdd);
		
		DataTypeSources dataSourcesConfig2 = (DataTypeSources) DataTypeSources.getDataSourcesConfig();
		System.out.println(dataSourcesConfig2.toString());
	}

	@Override
	public String toString() {
		return "DataSourcesConfig [parametersConfig=" + parametersConfig + "]";
	}
	
	
}
